草庐IT

c++ - 特化 std::make_shared

全部标签

c# - C DLL 中的 PInvoke char* 在 C# 中处理为字符串。空字符问题

CDLL中的函数如下所示:intmy_Funct(char*input,char*output);我必须从C#应用程序调用它。我通过以下方式执行此操作:...DllImportstuff...publicstaticexternintmy_Funct(stringinput,stringoutput);输入字符串完美地传输到DLL(我有可见的证据)。该函数填写的输出虽然是错误的。我有hexa数据,比如:3F-D9-00-01但不幸的是,两个零之后的所有内容都被截断了,只有前两个字节进入了我的C#应用程序。它发生了,因为(我猜)它被视为空字符并将其作为字符串的结尾。知道如何摆脱它吗?我试

c# - Visual Studio : How to manage code shared between projects

这可能以前发布过,但我不确定要查找哪些搜索词!快速解释。我有几个项目之间共享的代码。此代码本身仍在进行中。问题是每当我需要更新此代码时,我不想重复3次,这将成为一场噩梦。有没有办法将它添加到项目中,而无需将其复制到项目文件夹中?即我希望共享类作为链接到我的3个项目中C:\coderepository\sharedclass.cs不是\eachproject\bin\sharedclass.cs我是否必须将其创建为自己的库项目?如果编译器可以将其编译为“外部”代码,那就更好了。干杯。 最佳答案 正如其他人所说,您只需在解决方案资源管理

c# - C# 中通用类的特化模式?

在C#中,有时我希望可以为泛型类的某些“实例化”创建特殊方法。更新:下面的代码只是一个更抽象问题的愚蠢示例——不要过分关注时间序列,只是针对某些T的“添加额外方法”的原则。例子:classTimeseries{...TimeSeriesSlice(...){...}}在T是double的情况下,我想要一些额外的方法,比如Integrate(),Interpolate()等等只对double有意义,因为我需要对它们进行算术运算。有几种方法可以做到这一点,但我找不到一种令我满意的方法。1。继承到一个特殊的类classTimeseriesDouble:Timeseries{doubleInt

c# - 改进/修复 C 样式 block 注释的正则表达式

我正在(用C#)编写一个简单的解析器来处理一种看起来很像经典C的脚本语言。在我的一个脚本文件中,我用来识别/*block注释*/的正则表达式进入了某种无限循环,占用了100%的CPU多年。我使用的正则表达式是这样的:/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/关于为什么这可能被锁定有什么建议吗?或者,我可以改用什么正则表达式?更多信息:使用面向.NET3.5的C#3.0;我正在使用Regex.Match(string,int)方法在字符串的特定索引处开始匹配;我已经让程序运行了一个多小时,但比赛还没有完成;传递给Regex构造函数的选项是Regex

c# - 如何在 C# Unity 中使用带有二维数组的 C 结构

所以我有一个具有以下结构的CAPItypedefstructmat4f_{floatm[4][4];}mat4f;它作为参数传递给我的一个API函数:voidmyFunction(constmat4fmatrix);我正在使用dll将此函数导出到Unity中的C#:[DllImport("mylib")]privatestaticexternvoidmyFunction(mat4fmatrix);我的问题是,我应该将相应的C#结构设为什么?现在我有以下内容:[StructLayout(LayoutKind.Sequential)]publicstructmat4f{publicfloa

通用扩展方法的 C# 特化

我的MessageBus有以下扩展方法:publicstaticclassMessageBusMixins{publicstaticIDisposableSubscribe(thisIObservableobservable,MessageBusbus)whereT:class{...}publicstaticIDisposableSubscribe(thisIObservable>observable,MessageBusbus){...}}编译正常。但是当我尝试使用它时:IObservable>source=...;MessageBusbus=...;source.Subscrib

c# - 如何在尝试删除文件时调试 "Sharing Violation"

我有一个多线程C#应用程序,它创建文件,打开它们进行处理,然后在完成后删除它们。此应用程序可以预期处理1-100个文件。有点随机(很可能归因于应用程序的多线程性质)当我尝试在处理后删除文件时遇到共享冲突。我的直觉告诉我,维克,你在尝试删除文件之前没有正确关闭/处置文件。如果每个文件都发生这种情况,我会凭直觉去做,但事实并非如此。所以,我试图找出我在哪里犯了错误。外面有人对如何调试此类异常有任何指示吗?如果有意义的话,我很乐意在文件上看到堆栈跟踪。我将尝试展示伪代码,但是,我的问题更多是关于如何调试此类异常:申请事件:操作开始+=创建新处理器。传输文件+=Processor.Proces

用make_shared防止复制构建

我有一个经理类,允许客户端通过两种方法添加组件:一个没有参数,即默认构造组件,而另一个则采用了rvalue(应允许客户端使用组件的自定义构造函数)。这是我想到的代码:templatestd::shared_ptrAddComponent(){returnAddComponent(TComponent{this});}templatestd::shared_ptrAddComponent(constTComponent&&obj){autoptr=std::make_shared(obj);vec.push_back(ptr);returnptr;}我的问题是std::make_shared始终

c# - 是否有等同于 C++ std::partial_sort 的 C#?

我正在尝试为可通过多种条件排序的数据集实现分页算法。不幸的是,虽然其中一些标准可以在数据库级别实现,但有些必须在应用程序级别完成(我们必须与另一个数据源集成)。我们有一个分页(实际上是无限滚动)需求,并且正在寻找一种方法来最大程度地减少每次分页调用时在应用程序级别对整个数据集进行排序的痛苦。进行部分排序的最佳方法是什么,只对列表中绝对需要排序的部分进行排序?是否有等同于C++的std::partial_sort的.NET库中可用的函数?我应该如何解决这个问题?编辑:这是我想要的示例:假设我需要根据某些排序标准获取1000个元素集中的第21-40个元素。为了加快排序,并且由于无论如何我每

c# - 用 C# "out parameters"嵌入单声道

我正在尝试使用libmono将C#类嵌入到C应用程序中,但文档有点缺乏。我正在尝试调用原型(prototype)为voidMessageToSend(outMessageObjectmessage);的方法我如何表示“输出参数”?它是指向MonoObject的指针吗?谢谢。附言。就libmono而言,'out'和'ref'参数是否相同? 最佳答案 你是对的,它是MonoObject**。out和ref除了C#编译器之外几乎所有东西都是一样的。 关于c#-用C#"outparameters